refactor(agents): migrate connectors-demo to hub (#1102)#1442
Conversation
ConnectorsDemoAgent ships as the standalone gaia-agent-connectors-demo wheel under hub/agents/python/, discovered via the gaia.agent entry point instead of a hardcoded builtin registration. Namespaced id moves builtin: -> installed: to match its now-installed source. Adds a dedicated test_connectors_demo.yml CI workflow that installs the wheel and runs its tests.
SummaryClean, faithful migration that moves Hygiene is thorough: removed from Issues Found🟡 Redundant factory wrap + incorrect comment ( The registry already does both of these for every entry-point agent. namespaced_id = f"installed:{registration.id}"
registration = dataclasses.replace(
registration,
namespaced_agent_id=namespaced_id,
source="installed",
factory=_wrap_factory_with_namespaced_id(registration.factory, namespaced_id),
)So the explicit The comment 🟢 Now-dead skip test (
🟢 Stale path in docstring ( References Strengths
VerdictApprove with suggestions. No blocking issues. Worth fixing the misleading comment + redundant wrap before this becomes the template for the rest of the #1102 chat-family wave; the two 🟢 test nits are optional cleanup. |
## Why this matters AnalystAgent (`data`) and BrowserAgent (`web`) were the last two registry *builtins* backing `gaia analyze` / `gaia browse`. They now ship as standalone `gaia-agent-analyst` / `gaia-agent-browser` wheels under `hub/agents/python/`, discovered via the `gaia.agent` entry point — so the core framework wheel no longer hardcodes them and they version independently. Their full+lite model tiers are preserved exactly; the shared tier builder is promoted to `registry.build_model_tiers` so hub packages reuse the identical ~4B preset rather than re-deriving it. Continues the chat-family core wave for #1102 (after connectors-demo #1442). `gaia browse`/`gaia analyze` now resolve their agent through the registry and fail loudly with an install hint if the wheel is absent. ## Test plan - [x] `python util/lint.py --agents` — clean (analyst/browser optional) - [x] `pytest tests/unit/agents/test_registry.py tests/unit/test_agents_split.py tests/unit/cli/test_cli_smoke.py` — green (framework-only tolerates the now-installed agents) - [x] `pip install -e hub/agents/python/analyst hub/agents/python/browser && pytest hub/agents/python/{analyst,browser}/tests/` — 8 passed (incl. discovery + tier shape) - [x] black / isort / pylint -E — clean - [ ] CI: new `Analyst Agent Tests` + `Browser Agent Tests` workflows install the wheels and run their tests --------- Co-authored-by: Ovtcharov <kovtchar@amd.com>
Why this matters
ConnectorsDemoAgent was the last registry builtin still living in
src/gaia/agents/. It now ships as the standalonegaia-agent-connectors-demowheel underhub/agents/python/, discovered via thegaia.agententry point — so the core framework wheel no longer hardcodes it, and it versions independently like the other migrated agents. This is the first of the chat-family core wave for #1102; it proves the full end-to-end pattern (hub package + dedicated CI workflow + registry-tolerant framework tests) on the smallest agent before chat/analyst/browser/docqa/email follow.Its namespaced id moves
builtin:connectors-demo→installed:connectors-demoto match its installed source; the factory still stamps that id so the per-agent connector-activation filter (#1005) keeps matching grants.Test plan
python util/lint.py --agents— clean (connectors-demo now optional)pytest tests/unit/agents/test_registry.py tests/unit/test_agent_required_connectors.py tests/unit/connectors/test_formatting.py— green (framework-only, no builtin)pip install -e hub/agents/python/connectors-demo && pytest hub/agents/python/connectors-demo/tests/— 20 passed (incl. entry-point discovery + namespaced-id match)Connectors Demo Agent Testsworkflow installs the wheel and runs its tests